--- title: Operatorenpriorität slug: Web/JavaScript/Reference/Operators/Operator_Precedence tags: - JavaScript - Operator - precedence translation_of: Web/JavaScript/Reference/Operators/Operator_Precedence ---
{{jsSidebar("Operators")}}
Die Operatorpriorität bestimmt, in welcher Reihenfolge Operatoren ausgeführt werden. Operatoren, die in der Rangfolge zuerst kommen, werden auch zuerst ausgeführt.
{{EmbedInteractiveExample("pages/js/expressions-operatorprecedence.html")}}
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, 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.
Die nachfolgende Tabelle geordnet von der höchsten (20) bis zur kleinsten (1) Priorität.
Priorität | Operator | Assoziativität | Einzelner Operator |
---|---|---|---|
20 | {{jsxref("Operators/Grouping", "Gruppieren")}} | n/a | ( … ) |
19 | {{jsxref("Operators/Property_Accessors", "Eigenschaftszugriff", "#Dot_notation")}} | links nach rechts | … . … |
{{jsxref("Operators/Property_Accessors", "Berechnete Eigenschaften Access","#Bracket_notation")}} | links nach rechts | … [ … ] |
|
{{jsxref("Operators/new","new")}} (mit Argumentenliste) | n/a | new … ( … ) |
|
Funktionsaufruf | links nach rechts | … ( … ) |
|
18 | {{jsxref("Operators/new","new")}} (ohne Argumentenliste) | rechts nach links | new … |
17 | {{jsxref("Operators/Arithmetic_Operators","Postfix Inkrement","#Increment")}} | n/a | … ++ |
{{jsxref("Operators/Arithmetic_Operators","Postfix Dekrement","#Decrement")}} | … -- |
||
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 | … , … |