--- 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 | … , … |