Die Division in JavaScript (Die Division in JavaScript), Lektion, Seite 722782
https://www.purl.org/stefan_ram/pub/division_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Die Division in JavaScript 

Einführendes Beispiel

Die Division wird mit einem Schrägstrich »/« geschrieben (in der Mathematik ist auch ‹÷› üblich). Der Schrägstrich »/« sollte nicht mit dem inversen Schrägstrich »\« verwechselt werden!

Auswertung
70/10
7

Syntax

Neue, erweiterte Syntax
Ausdruck
.----------.
---.----------------->| Literal |-----------------------------.--->
| '----------' ^
| .-. .----------. .-. |
'-------->( ( )--->| Ausdruck |--->( ) )--------------------'
| '-' '----------' '-' |
| .-. .----------. |
'-------->( - )--->| Ausdruck |-----------------------------'
| '-' '----------' |
| .-. .----------. |
'-------->( + )--->| Ausdruck |-----------------------------'
| '-' '----------' |
| .------. .----------. |
'--->( typeof )--->| Ausdruck |-----------------------------'
| '------' '----------' |
| .----------. .-. .----------. |
'----------------->| Ausdruck |--->( / )--->| Ausdruck |----'
'----------' '-' '----------'

Sind D  und d  zwei Ausdrücke, so ist D /d  wieder ein Ausdruck, der Quotient  von D  und d. Dabei wird D  auch Dividend  und d  Divisor  (diˈviːzoːʌ̯) genannt: „Dividend/Divisor“. (Diese vereinfachte Syntax bringt die Assoziativität der Division nicht richtig zum Ausdruck. Diese wird daher weiter unten separat erklärt.) Dieser Operator hat zwei  Operandenausdrücke (einen linken und einen rechten). Er wird daher binär  genannt, während die zuvor vorgestellten Operatoren unär  waren (sie hatten nur einen  Operandenausdruck). Dieser Operator steht zwischen  seinen Operandenausdrücken, daher wird er auch als ein Infixoperator  bezeichnet.

Typanforderungen

Der Dividend und der Divisor müssen beide jeweils numerisch sein.

Auswertung
70/"10"
7

Wenn ein Operand eines Operators, der eine Zahl als Operand erwartet, eine numerische Zeichenfolge ist, dann wird dieser ein entsprechender Zahlenwert und der Typ »number« zugeordnet. Die obenstehende Division wird beispielsweise so gerechnet wie die folgende Division.

Auswertung
70/10
7

Assoziativität

Die Division ist linksassoziativ, das heißt in »12/3/2« ist »12/3« ein Ausdruck, aber nicht »3/2«. »12/3/2« bedeutet also »(12/3)/2« – es wird von links  beginnend zusammengefaßt.

In »12/3/2« ist der Teil »12/3« ein Operand, nicht jedoch »3/2«, da die »3« mit »12/« zusammengefaßt wird und nicht mit »/2«. Einen Operanden, wie »12/3« in »12/3/2« kann man isoliert betrachten, wenn man seinen Wert bestimmen will.

Auswertung
12/3/2
2

Unter einer Operation  verstehen wir einen Rechenschritt, im Sinne eines direkt zu einem bestimmten Operator gehörenden Teil der Auswertung eines Ausdrucks . Eine Operation findet also während der Auswertung eines Ausdrucks statt. Die Operation zu einem Operator umfaßt nicht die Auswertung von Operanden dieses Operators.

In diesem Kurs stellen wir Operationen durch eine Pfeil dar. Der zugehörige Ausdruck wird auf der linken Seite des Pfeils durch eine Linie überstrichen und auf der rechten Seite durch ein Literal ersetzt, dessen Wert genau oder näherungsweise das Ergebnis der Operation darstellt. (Dieses Ersetzen eines Operatorausdrucks durch ein Literal mit genauem oder näherungsweise gleichem Wert nennen wir eine Reduktion.)

Operationen bei der Auswertung von »12 / 3 / 2«:
Operation Division »12 / 3«, Ergebnis »4«.
______
12 / 3 / 2 →
4 / 2
Operation Division »4 / 2«, Ergebnis »2«.
_____
4 / 2 →
2

Der Ausdruck »12 / 3 / 2« wird also mit zwei Operationen ausgewertet. Zuerst wird die linke  Division ausgeführt, weil der Operator linksassoziativ ist, dann wird die rechte  Division vollzogen.

Auswertung
( 12/3 )/2
2

Möchte man 12 durch 3/2 teilen, so muß man dies als »12/( 3/2 )« schreiben.

Auswertung
12/( 3/2 )
8
Operationen bei der Auswertung von »12 /( 3/2 )«:
Operation Division »3 / 2«, Ergebnis »1«.
    _______
12 /( 3/2 ) →
12 / 1
Operation Division »12 / 1«, Ergebnis »12«.
______
12 / 1 →
12

Im Falle des Ausdrucks »12 /( 3/2 )« wird nun der rechte  Quotient als Ausdruck ausgewertet, weil er in runde Klammern eingeschlossen wurde.

Priorität

Der Vorzeichenwechsel hat eine höhere  Priorität als die Division. Dies heißt, daß der Vorzeichenwechseloperator in »-3/2« sich nur auf die »3« bezieht und nicht etwas auf den gesamten Bruch.

Bei der Auswertung von »-3/2« wird zuerst  der Vorzeichenwechsel und dann  die Division ausgeführt.

Bei der Auswertung von »-( 3/2 )« wird zuerst  die Division und dann  der Vorzeichenwechsel ausgeführt.

Da es weiteren Verlauf des Kurses nicht wichtig ist, die Auswertung von Vorzeichenwechseln ausdrücklich darzustellen, verzichten wir zur Vereinfachung darauf, wenn wir Operationen einer Auswertung angeben, so wie wir auch auf die Darstellung von Operationen zu Ausdruckklammern verzichten. Wir interpretieren beispielsweise die Auswertung von »-( 3/2 )« als eine Division mit dem Ergebnis »-1.5«, ohne die Klammern und das Vorzeichen als eigene Operationen zu würdigen.

In der folgenden Tabelle zur Priorität von Operatoren finden sich Operatoren mit höherer Priorität weiter oben

Priorität der bisher behandelten Operatoren
()                   Eingeklammerter Ausdruck
+ - typeof Unaere vorangestellte Operatoren
/ Division

Übungsfragen

?   Ausdrücke

Welche Typen und Werte haben die folgenden Ausdrücke jeweils?

A »8 / "2"«
B »12/4/2«

?   Verständnis von Fachbegriffen *

Zu einem (hypothetischen) binären Infixoperator »∘« wird erklärt: „Der Wert eines Ausdrucks, der aus dem Operator »∘« sowie einem zu diesem Operator gehörenden linken und rechten Operanden besteht, ist der Wert des linken Operanden.“.

Welchen Wert hat demnach »4∘7«?

Welchen Wert hat »4∘2∘7«?

(Kürzere Formulierung der Erklärung: „Der Wert des Operator »∘« ist der Wert seines linken Operanden.“.)

?   Verständnis von Fachbegriffen (1) *

Angenommen die Division »/« wäre nicht  linksassoziativ, sondern rechtsassoziativ. Welchen Wert hätte dann der Ausdruck »12/4/2«?

?   Operanden und Operatoren *

Wie viele Operanden hat der erste Divisionsoperator »/« in dem Ausdruck »8/4/2«? Was sind diese Operanden? (Nicht die Werte der Operanden sind hier gesucht, sondern die Operandenausdrücke.)

Wie viele Operanden hat der zweite Divisionsoperator »/« in dem Ausdruck »8/4/2«? Was sind diese Operanden? (Nicht die Werte der Operanden sind hier gesucht, sondern die Operandenausdrücke.)

Welcher der beiden Divisionsoperatoren »/« wird bei der Ermittlung des Wertes des Ausdrucks »8/4/2« als letzter ausgeführt?

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722782 stefan_ram:722782 Die Division in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722782, slrprddef722782, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/division_javascript