Operatorenpriorität

Die Operatorpriorität bestimmt, in welcher Reihenfolge Operatoren ausgeführt werden. Operatoren, die in der Rangfolge zuerst kommen, werden auch zuerst ausgeführt.

The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.

Assoziativität

Assoziativität, bestimmt in welcher Reihenfolge Operatoren der selben Rangfolge ausgeführt werden. Betrachten wir als Beispiel den folgenden Ausdruck:

a OP b OP c

Linksassoziativ (links nach rechts) bedeutet, dass der Code als (a OP b) OP c ausgeführt wird, während rechtssassoziativ (rechts nach links) heißt, dass der Code wie a OP (b OP c) ausgeführt wird. Zuordnungsoperatoren sind rechtssassoziativ, also kann man schreiben:

a = b = 5;

mit dem erwarteten Resultat, dass sowohl a als auch b den Wert 5 haben. Das liegt daran, dass Zuordnungsopertoren den Wert zurükgeben, den sie zuerst zugeordnet haben: Zuerst wird b auf 5 gesetzt; daraufhin wird a auf 5, also den Rückgabewert von b = 5, gesetzt.

Tabelle

Die nachfolgende Tabelle geordnet von der höchsten (20) bis zur kleinsten (1) Priorität.

Priorität Operator Assoziativität Einzelner Operator
20 Gruppieren n/a ( … )
19 Eigenschaftszugriff links nach rechts … . …
Berechnete Eigenschaften Access links nach rechts … [ … ]
new (mit Argumentenliste) n/a new … ( … )
Funktionsaufruf links nach rechts … ( )
18 new (ohne Argumentenliste) rechts nach links new …
17 Postfix Inkrement n/a … ++
Postfix Dekrement … --
16 Logisches NICHT rechts nach links ! …
Bitweises NICHT ~ …
Unäres Plus + …
Unäres Minus - …
Prefix Inkrement ++ …
Prefix Dekrement -- …
typeof typeof …
void void …
delete delete …
await await …
15 Potenzierung rechts nach links … ** …
14 Multiplikation links nach rechts … * …
Division … / …
Rest … % …
13 Addition links nach rechts … + …
Subtraktion … - …
12 Bitweise Linksverschiebung links nach rechts … << …
Bitweise Rechtsverschiebung … >> …
Bitweise Vorzeichnelose Rechtsverschiebung … >>> …
11 Kleiner als links nach rechts … < …
Kleiner als oder gleich … <= …
Größer als … > …
Größer als oder gleich … >= …
in … in …
instanceof … instanceof …
10 Gleichheit links nach rechts … == …
Ungleichheit … != …
Strikte Gleichheit … === …
Strikte Ungleichheit … !== …
9 Bitweises UND links nach rechts … & …
8 Bitweises Exklusiv ODER (XOR) links nach rechts … ^ …
7 Bitweises ODER links nach rechts … | …
6 Logisches UND links nach rechts … && …
5 Logisches ODER links nach rechts … || …
4 Bedingt rechts nach links … ? … : …
3 Zuweisung rechts nach links … = …
… += …
… -= …
… **= …
… *= …
… /= …
… %= …
… <<= …
… >>= …
… >>>= …
… &= …
… ^= …
… |= …
2 yield rechts nach links yield …
yield* yield* …
1 Spread n/a ... …
0 Komma / Sequenz links nach rechts … , …