We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

Operator Precedence

Summary

Operator precedence determines the order in which operators are evaluated. Operators with higher precedence are evaluated first.

A common example:

```3 + 4 * 5 // returns 23
```

The multiplication operator ("`*`") has higher precedence than the addition operator ("`+`") and thus will be evaluated first.

Associativity

Associativity determines the order in which operators of the same precedence are processed. For example, consider an expression:

```a OP b OP c
```

Left-associativity (left-to-right) means that it is processed as `(a OP b) OP c`, while right-associativity (right-to-left) means it is interpreted as `a OP (b OP c)`. Assignment operators are right-associative, so you can write:

```a = b = 5;
```

with the expected result that `a` and `b` get the value 5. This is because the assignment operator returns the value that it assigned. First, `b` is set to 5. Then the `a` is set to the value of `b`.

Table

The following table is ordered from highest (0) to lowest (18) precedence.

Precedence Operator type Associativity Individual operators
0 grouping n/a `(``)`
1 member left-to-right `.…`
`[…]`
new n/a `new``(…)`
2 function call left-to-right `(…)`
new right-to-left `new`
3 increment n/a `++`
decrement n/a `--`
4 logical-not right-to-left `!`
bitwise not right-to-left `~`
unary + right-to-left `+`
unary negation right-to-left `-`
typeof right-to-left `typeof`
void right-to-left `void`
delete right-to-left `delete`
5 multiplication left-to-right `*`
division left-to-right `/`
modulus left-to-right `%`
6 addition left-to-right `+`
subtraction left-to-right `-`
7 bitwise shift left-to-right `<<`
`>>`
`>>>`
8 relational left-to-right `<`
`<=`
`>`
`>=`
in left-to-right `in`
instanceof left-to-right `instanceof`
9 equality left-to-right `==`
`!=`
`===`
`!==`
10 bitwise-and left-to-right `&`
11 bitwise-xor left-to-right `^`
12 bitwise-or left-to-right `|`
13 logical-and left-to-right `&&`
14 logical-or left-to-right `||`
15 conditional right-to-left `?``:`
16 yield right-to-left `yield`
17 assignment right-to-left `=`
`+=`
`-=`
`*=`
`/=`
`%=`
`<<=`
`>>=`
`>>>=`
`&=`
`^=`
`|=`
18 comma left-to-right `,`