precedência de operadores é uma regra fundamental para se trabalhar com o Javascript. Esta regra estabelece qual operador deve ser avaliado primeiro em uma determinada expressão, e é extremamente importante para garantir que o resultado da expressão seja o esperado.
Para ilustrar esta regra, vamos analisar a operação matemática a seguir: 4 + 5 * 6.
Na expressão acima, temos dois operadores: adição (+) e multiplicação (*). Utilizando a regra de precedência de operadores, a operação de multiplicação é avaliada primeiro, pois possui maior precedência. Ou seja, o resultado da expressão é 34, pois 5 * 6
é avaliado primeiro (30) e então 4 é adicionado ao resultado (30 + 4
= 34).
Além da adição e da multiplicação, existem outros operadores em Javascript que possuem precedência, tais como: subtração (-), divisão (/), resto da divisão (%) e operações lógicas (&&, ||, !).
A precedência dos operadores lógicos é similar à dos operadores aritméticos, onde o operador com maior precedência é avaliado primeiro. Por exemplo, na expressão 4 && 5 || 6, o operador && (AND lógico) é avaliado primeiro. O resultado será 5, pois primeiro 4 && 5 é avaliado (4 é verdadeiro e 5 é verdadeiro, portanto o resultado é verdadeiro), então 5 || 6 é avaliado (5 é verdadeiro, então o resultado é verdadeiro) e então o resultado final é 5.
A seguir, são apresentados exemplos detalhados de código que ilustram a precedência de operadores em JavaScript:
let a = 2;
let b = 3;
let c = 4;
let resultado = a + b * c; // primeiro, b * c é avaliado (12), depois a + 12 é avaliado (14)
console.log(resultado); // 14
let a = true;
let b = false;
let c = true;
let resultado = a || b && c; // primeiro, b && c é avaliado (false), depois a || false é avaliado (true)
console.log(resultado); // true
let a = 2;
let b = 3;
let c = 4;
a *= b + c; // primeiro, b + c é avaliado (7), depois a *= 7 é avaliado (14)
console.log(a); // 14
let a = 2;
let b = 3;
let c = 4;
let resultado = a < b + c; // primeiro, b + c é avaliado (7), depois a < 7 é avaliado (true)
console.log(resultado); // true