JavaScript exponent operator

JavaScript comes with an exponentiation operator marked with the double asterisk symbol (**)

You can add the exponentiation operator after the base number and before the exponent number:

Consider the following code example:

console.log(2 ** 3); // 8

console.log(3 ** 4); // 81

console.log(3 ** -2); // 0.111

The base number is placed on the left side of the operator, while the exponent number is placed on the right side.

The exponentiation operator is equal to the Math.pow() method, except that it also can run bigint values.

BigInt("3") ** BigInt("2"); // 9n

Math.pow(BigInt("3"), BigInt("2"));
// Uncaught TypeError: 
// Cannot convert a BigInt value to a number

BigInt("3") ** 2
// Uncaught TypeError: 
// Cannot mix BigInt and other types, use explicit conversions

The exponentiation operator is right-associative, meaning that without parentheses, JavaScript will work on the right side of the equation first:

2 ** 3 ** 1 // equal to 2 ** (3 ** 1)
2 ** 3 ** 1 ** 4 // equal to 2 ** (3 ** (1 ** 4))

The calculation will proceed from right to left unless you add parentheses as shown below:

(2 ** 3) ** 1 // 2 ** 3 will be calculated first
2 ** (3 ** 1) ** 4 // equal to 2 ** ((3 ** 1) ** 4)

Now you’ve learned how the exponentiation operator works in JavaScript. Good work! 👍

Take your skills to the next level ⚡️

I'm sending out an occasional email with the latest tutorials on programming, web development, and statistics. Drop your email in the box below and I'll send new stuff straight into your inbox!

No spam. Unsubscribe anytime.