exponentiation operator is one of minor feature introduced in EcmaScript2017(ES7) language.

It applies two asterisk symbols ** on two operands which returns the result of first operand to power of second operand.

Important points

  • These is replacement of Math.pow(m,n) function in Math library
  • used in arithmetic,scientifically and 3D calculations
  • Both operands are variables or constants
  • right associative ie right to left, applied when multiple exponential operators are used
  • Shorter syntax for power of values.

Syntax of exponentiation operator

Operand1 ** Operand2 which is equal to Operand1 power of Operand2

Operand1 is called as Base Operand2 is called as exponent For example, 5***3 is equal to 5 power of 3 is equal to 5*5*5 (125)

var m = 3;
var n = 2;
m ** n; // 9
Math.pow(m,n) // 9 returned

**Grouping operators from right to left**

operator is right associative which means applies from right to left
m ** n ** 0 is equal to m ** (n ** o)

3 ** 2 ** 2 equl to 3**(2**2) // returns 91

Some of the valid and invalid examples are seen below

Binary operator, Unary opeartor is not allowed

Unary operators like +,-,delete and void are not allowed for base

Invalid usage

+2 **4
-2** 5

The above code results compilation error unknown: Illegal expression. Wrap left hand side or entire exponentiation in parentheses.

exponent NAN,null,undefined values

  • applying any operator on NAN as exponent results always NAN.
  • null will treat as zero and apply null results to 1
  • undefined exponent results NAN
2 ** NAN //NAN
2 ** undefined //NAN
2 ** null // 1