Operator Precedence
Operator precedence in JavaScript is a set of rules. This rule controls the order in which operators execute when evaluating expressions. Operations with higher precedence are performed Mr. Foo the operators of lower precedence. For example, multiplication is performed prior to addition.
The following table lists the JavaScript operators by priority from highest to lowest. Operators with the same precedence are evaluated in order from left to right.
Where parentheses can be used to change the order of evaluation determined by the operator precedence. This means that the expression in parentheses should be evaluated all before it is used for the remainder of the expression.
z = * (3 + +)
There are five operators in the expression: =, *, (), +, and another +. Based on the rules for operator precedence, they are evaluated in the following order: (), +, +, *, =.
Binding nature
The binding determines the order in which operators with the same precedence are executed. Consider the following expression:
a OP b OP c
Left-associative (computed from left to right) is equivalent to enclosing the left subexpression with parentheses (a OP b) OP c
, similar to right-to-left calculations a OP (b OP c)
. The assignment operator is right-associative, so you can write:
a = b = 5;
a
the result and b
the value will be 5. This is because the return result of the assignment operator is the value to the right of the assignment operator, which is b
assigned a value of 5 and is then a
assigned b=5
the return value, which is 5.
Summary table
The following table arranges all operators from highest to lowest in priority order.
priority (high-to-low) |
type of Operation |
Relevance of |
operator |
19 |
圆括号 |
N/A |
( … ) |
18 |
成员访问 |
From left to right |
… . … |
需计算的成员访问 |
From left to right |
… [ … ] |
new (with parameter list) |
N/A |
new … ( … ) |
17 |
Function call |
From left to right |
… ( … ) |
New (no parameter list) |
From right to left |
new … |
16 |
Post increment (operator behind) |
N/A |
… ++ |
Post decrement (operator behind) |
N/A |
… -- |
15 |
Logical Non- |
From right to left |
! … |
Bitwise non- |
From right to left |
~ … |
One-dollar addition |
From right to left |
+ … |
One-dollar subtraction |
From right to left |
- … |
Forward increment |
From right to left |
++ … |
Forward Decrement |
From right to left |
-- … |
typeof |
From right to left |
typeof … |
void |
From right to left |
void … |
Delete |
From right to left |
delete … |
14 |
Multiplication |
From left to right |
… * … |
Division |
From left to right |
… / … |
Take the mold |
From left to right |
… % … |
13 |
Addition |
From left to right |
… + … |
Subtraction |
From left to right |
… - … |
12 |
Bitwise LEFT Shift |
From left to right |
… << … |
Bitwise RIGHT SHIFT |
From left to right |
… >> … |
Unsigned Right Shift |
From left to right |
… >>> … |
11 |
Less than |
From left to right |
… < … |
Less than or equal |
From left to right |
… <= … |
Greater than |
From left to right |
… > … |
Greater than or equal |
From left to right |
… >= … |
Inch |
From left to right |
… in … |
instanceof |
From left to right |
… instanceof … |
10 |
Equals |
From left to right |
… == … |
Non-equal sign |
From left to right |
… != … |
Full equals |
From left to right |
… === … |
Non-full equals |
From left to right |
… !== … |
9 |
Bitwise-AND |
From left to right |
… & … |
8 |
Bitwise XOR OR |
From left to right |
… ^ … |
7 |
Bitwise OR |
From left to right |
… | … |
6 |
Logic and |
From left to right |
… && … |
5 |
Logical OR |
From left to right |
… || … |
4 |
Conditional operators |
From right to left |
… ? … : … |
3 |
Assign value |
From right to left |
… = … |
… += … |
… -= … |
… *= … |
… /= … |
… %= … |
… <<= … |
… >>= … |
… >>>= … |
… &= … |
… ^= … |
… |= … |
2 |
Yield |
From right to left |
yield … |
yield* |
From right to left |
Yield* ... |
1 |
Expand operator |
N/A |
... ... |
0 |
Comma |
From left to right |
… , … |
Precedence of operators in JavaScript