--- title: Exponentiation (**) slug: Web/JavaScript/Reference/Operators/Exponentiation tags: - JavaScript - Language feature - Operator - Reference browser-compat: javascript.operators.exponentiation translation-of: Web/JavaScript/Reference/Operators/Exponentiation ---
L'opérateur d'exponentiation (**) fournit le résultat obtenu lorsqu'on élève le premier opérande à la puissance indiquée par le second. Il est équivalent Math.pow exception faite que cet opérateur permet également d'utiliser des valeurs BigInt comme opérandes.
Opérateur : var1 ** var2
L'opérateur d'exponentiation est associatif à droite : a ** b ** c est équivalent à a ** (b ** c).
Pour la plupart des langages possédant un opérateur d'exponentiation (ex. PHP, Python, etc.), l'opérateur d'exponentiation possède une précédence plus élevée que les opérateurs unaires (comme l'addition unaire + ou la soustraction unaire -). Il existe toutefois quelques exceptions comme Bash, où ** possède une précédence inférieure à celles des opérateurs unaires.
En JavaScript, il est impossible d'écrire une expression d'exponentiation ambigüe : on ne peut pas placer un opérateur unaire (+/-/~/!/delete/void/typeof) avant le nombre servant de base, cela provoquera une exception SyntaxError.
-2 ** 2; // 4 en Bash, -4 pour d'autres langages. // Invalide en JavaScript car l'opération est ambigüe. -(2 ** 2); // -4 en JavaScript, les parenthèses évitent l'ambiguité.
Attnetion, certains langages de programmation utilisent l'accent circonflexe ^ pour exprimer l'exponentiaion mais JavaScript utilise ce symbole pour l'opérateur binaire OU exclusif (XOR).
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
Pour prendre l'opposé du résultat :
-(2 ** 2) // -4
Pour forcer le signe de la base en négatif :
(-2) ** 2 // 4
{{Specifications}}
{{Compat}}