--- title: Operador Exponencial slug: Web/JavaScript/Reference/Operators/Exponentiation tags: - JavaScript - Operador Exponencial translation_of: Web/JavaScript/Reference/Operators/Exponentiation original_slug: Web/JavaScript/Reference/Operators/Operador_Exponencial ---
O operador de exponenciação (**) retorna o resultado de elevar o primeiro operando à potência do
segundo operando. É equivalente ao método Math.pow, exceto que também aceita números do tipo BigInt
como operandos.
x ** y;
O operador de exponenciação é associativo à direita: a ** b ** c é igual a a ** (b ** c).
Na maioria das linguagens, como PHP, Python e outras que têm um operador de exponenciação (**),
o operador de exponenciação é definido para ter uma precedência maior do que os operadores unários,
como o unário + e unário -, mas há algumas exceções.
Por exemplo, no Bash, o operador ** é definido para ter uma precedência menor do que os operadores unários.
Em JavaScript, é impossível escrever uma expressão de exponenciação ambígua.
Ou seja, você não pode colocar um operador unário (+ / - / ~ /! / delete / void / typeof)
imediatamente antes do número base; fazer isso causará um SyntaxError.
-2 ** 2;
// // 4 no Bash, -4 em outros idiomas.
// Isso é inválido em JavaScript, pois a operação é ambígua.
-(2 ** 2);
// -4 em JavaScript e a intenção do autor não é ambígua.
Observe que algumas linguagens de programação usam o símbolo circunflexo ^ para exponenciação,
mas o JavaScript usa esse símbolo para o operador XOR lógico bit a bit.
2 ** 3 // 8
3 ** 2 // 9
3 ** 2.5 // 15.588457268119896
10 ** -1 // 0.1
NaN ** 2 // NaN
2 ** 3 ** 2 // 512
2 ** (3 ** 2) // 512
(2 ** 3) ** 2 // 64
Para inverter o sinal do resultado de uma expressão de exponenciação:
-(2 ** 2) // -4
Para forçar a base de uma expressão de exponenciação a ser um número negativo:
(-2) ** 2 // 4
{{Compat}}