运算符优先级
运算符两个可以有任意多个空格或换行符
结合性决定了拥有相同优先级的运算符的执行顺序
| 优先级 | 运算类型 | 关联性 | 运算符 |
| 20 | n/a | ( … ) | |
| 19 | 从左到右 | … . … | |
| 从左到右 | … [ … ] | ||
| new (带参数列表) | n/a | new … ( … ) | |
| 从左到右 | … ( … ) | ||
18 | new (无参数列表) | 从右到左 | new … |
| 17 | 后置递增(运算符在后) | n/a | … ++ |
| 后置递减(运算符在后) | … -- | ||
| 16 | 从右到左 | ! … | |
| ~ … | |||
| + … | |||
| - … | |||
| ++ … | |||
| -- … | |||
| typeof … | |||
| void … | |||
| delete … | |||
await … | |||
15 | 从右到左 | … ** … | |
| 14 | 从左到右 | … * … | |
| … / … | |||
| … % … | |||
| 13 | 从左到右 | … + … | |
| … - … | |||
| 12 | 从左到右 | … << … | |
| … >> … | |||
| … >>> … | |||
| 11 | 从左到右 | … < … | |
| … <= … | |||
| … > … | |||
| … >= … | |||
| … in … | |||
| … instanceof … | |||
| 10 | 从左到右 | … == … | |
| … != … | |||
| … === … | |||
| … !== … | |||
| 9 | 从左到右 | … & … | |
| 8 | 从左到右 | … ^ … | |
| 7 | 从左到右 | … | … | |
| 6 | 从左到右 | … && … | |
| 5 | 从左到右 | … || … | |
| 4 | 从右到左 | … ? … : … | |
| 3 | 从右到左 | … = … | |
| … += … | |||
| … -= … | |||
| … *= … | |||
| … /= … | |||
| … %= … | |||
| … <<= … | |||
| … >>= … | |||
| … >>>= … | |||
| … &= … | |||
| … ^= … | |||
| … |= … | |||
| 2 | 从右到左 | yield … yield* … | |
| 1 | n/a | ... … | |
| 0 | 从左到右 | … , … |