Precedência de Operadores

Esta tradução está incompleta. Ajude atraduzir este artigo.

Resumo

A precedência de operadores determina a ordem em que os operadores são processados. Operadores com maior precedência são processados primeiro.

Um exemplo simples:

3 + 4 * 5 // returns 23	 

O operador de multiplicação ("*") tem maior precedência que o operador de adição ("+") e por isso será executado primeiro.

Associatividade

Associatividade determina a ordem em que operadores da mesma precedência são processados. Por exemplo, considere a expressão:

a OP b OP c

Associatividade à esquerda (esquerda para direita) significa que a expressão será processada como (a OP b) OP c, enquanto associatividade à direita (direita para esquerda) significa que será interpretada como a OP (b OP c). Operadores de atribuição são associativos à direita, então você pode escrever:

a = b = 5; 5 = b = a

com o resultado esperado que a e b tenham o valor 5. Isto é porque o operador de atribuição retorna o valor que ele atribuiu. Primeiro, b é definido com o valor 5. Então a é definido com o valor de b.

Tabela

A tabela seguinte está ordenada da mais alta (0) para a mais baixa (19) precedência.

Precedência Tipo do Operador Associatividade Operadores individuais
0 Agrupamento n/a ( … )
1 Acesso a Membro esquerda para direita … . …
Acesso a Membro Computado esquerda para direita … [ … ]
new (com lista de argumentos) n/a new … ( … )
2 Chamada a Função esquerda para direita … ( … )
new (sem lista de argumentos) direita para esquerda new …
3 Incremento Pós-fixado n/a … ++
Decremento Pós-fixado n/a … --
4 NÃO lógico direita para esquerda ! …
NÃO bit-a-bit direita para esquerda ~ …
Positivo Unário direita para esquerda + …
Negativo Unário direita para esquerda - …
Incremento Pré-fixado direita para esquerda ++ …
Decremento Pré-fixado direita para esquerda -- …
typeof direita para esquerda typeof …
void direita para esquerda void …
delete direita para esquerda delete …
5 Multiplicação esquerda para direita … * …
Divisão esquerda para direita … / …
Resto esquerda para direita … % …
6 Adição esquerda para direita … + …
Subtração esquerda para direita … - …
7 Deslocamento de bits para esquerda esquerda para direita … << …
Deslocamento de bits para direita esquerda para direita … >> …
Deslocamento de bits para direita, sem sinal esquerda para direita … >>> …
8 Menor Que esquerda para direita … < …
Menor ou Igual a esquerda para direita … <= …
Maior Que esquerda para direita … > …
Maior ou Igual a esquerda para direita … >= …
in esquerda para direita … in …
instanceof esquerda para direita … instanceof …
9 Igualdade esquerda para direita … == …
Desigualdade esquerda para direita … != …
Igualdade Estrita esquerda para direita … === …
Desigualdade Estrita esquerda para direita … !== …
10 E bit-a-bit esquerda para direita … & …
11 OU exclusivo bit-a-bit esquerda para direita … ^ …
12 OU bit-a-bit esquerda para direita … | …
13 E lógico esquerda para direita … && …
14 OU lógico esquerda para direita … || …
15 Condicional direita para esquerda … ? … : …
16 Atribuição direita para esquerda … = …
… += …
… -= …
… *= …
… /= …
… %= …
… <<= …
… >>= …
… >>>= …
… &= …
… ^= …
… |= …
17 yield direita para esquerda yield …
18 Propagação n/a ... …
19 Vírgula / Sequência esquerda para direita … , …

 

Etiquetas do documento e colaboradores

 Colaboradores desta página: ShadYueh
 Última atualização por: ShadYueh,