Teachnique
      CourseRoadmaps
      Login

      OverviewPlacementSyntaxHello WorldConsole.log()CommentsVariableslet StatementConstantsData TypesType ConversionsStrict ModeReserved Keywords

      OperatorsArithmetic OperatorsComparison OperatorsLogical OperatorsBitwise OperatorsAssignment OperatorsConditional Operatorstypeof OperatorNullish Coalescing OperatorDelete OperatorComma OperatorGrouping OperatorYield OperatorSpread OperatorExponentiation OperatorOperator Precedence

      If...ElseWhile LoopsFor LoopFor...in LoopFor...of LoopLoop ControlBreak StatementContinue StatementSwitch CaseUser Defined Iterators

      FunctionsFunction ExpressionsFunction ParametersDefault ParametersFunction() ConstructorFunction HoistingArrow FunctionsFunction InvocationFunction call() MethodFunction apply() MethodFunction bind() MethodClosuresVariable ScopeGlobal VariablesSmart Function Parameters

      NumberBooleanStringsArraysDateMathRegExpSymbolSetsWeakSetMapsWeakMapIterablesReflectTypedArrayTempate LiteralsTagged Templates

      Objects OverviewClassesObject PropertiesObject MethodsStatic MethodsDisplay ObjectsObject AccessorsObject ConstructorsNative PrototypesES5 Object MethodsEncapsulationInheritanceAbstractionPolymorphismDestructuring AssignmentObject DestructuringArray DestructuringNested DestructuringOptional ChainingGlobal ObjectMixinsProxies

      HistoryVersionsES5ES6ECMAScript 2016ECMAScript 2017ECMAScript 2018ECMAScript 2019ECMAScript 2020ECMAScript 2021ECMAScript 2022

      CookiesCookie AttributesDeleting Cookies

      Browser Object ModelWindow ObjectDocument ObjectScreen ObjectHistory ObjectNavigator ObjectLocation ObjectConsole Object

      Web APIHistory APIStorage APIForms APIWorker APIFetch APIGeolocation API

      EventsDOM Events

      Feedback

      Submit request if you have any questions.

      Course
      Exponentiation Operator

      JavaScript Tutorial

      This JavaScript tutorial is crafted for beginners to introduce them to the basics and advanced concepts of JavaScript. By the end of this guide, you'll reach a proficiency level that sets the stage for further growth. Aimed at empowering you to progress towards becoming a world-class software developer, this tutorial paves the way for a successful career in web development and beyond.

      Exponentiation Operator

      Exponentiation Operator

      The exponentiation operator in JavaScript is represented as **. The exponentiation operator takes two operands and returns the power of the first operand raised to the second.
      The exponentiation operator can also accept the variables of the BigInt data type as operands. Also, it follows the property of associativity, which means a**b**c and a**(b**c) expressions give the same result.
      The exponentiation operator evaluates the expression from right to left.

      Syntax

      We should follow the syntax below to use the exponentiation operator.
      let pow = x ** y;

      Return value

      It returns the result of raising the first operand (x) to the power of the second operand (y).

      Examples

      Let's understand the exponentiation operator in details with the help of some examples.

      Example

      The example below defines the p and q variables containing the 2 and 3 values. After that, we used the exponentiation operator to get the PQ. In the output, you can observe the value of the 'pow' variable, which is 23, equal to 8.
      <html>
      <body>
      <div id = "output"></div>
      <script>
      let p = 2;
      let q = 3;
      let pow = p ** q;
      document.getElementById("output").innerHTML =
      "The value of p ** q: " + pow;
      </script>
      </body>
      </html>
      It will produce the following result
      The value of p ** q: 8

      Example: Associativity of Exponentiation Operator

      This example demonstrates that the exponentiation operator follows the associativity property and evaluates the expression from right to left.
      Both expressions print the 6561 in the output, equal to the 38, where 8 equals the 23.
      <html>
      <body>
      <div id="output"></div>
      <script>
      let p = 3;
      let q = 2;
      let r = 3;
      let pow1 = p ** q ** r;
      let pow2 = p ** (q ** r);
      document.getElementById("output").innerHTML =
      "pow1 = " + pow1 + "<br>" +
      "pow2 = " + pow2;
      </script>
      </body>
      </html>
      
      It will produce the following result −
      pow1 = 6561
      pow2 = 6561
      

      Example: Exponentiation operator with BigInt variables

      The below example demonstrates that the exponentiation operator can also be used with the bigint numbers. It returns the bigint value in the output.
      <html>
      <body>
      <div id = "output"></div>
      <script>
      let p = 10000000000000000000000000000n;
      let q = 2n;
      let pow = p ** q;
      document.getElementById("output").innerHTML = "pow = " + pow;
      </script>
      </body>
      </html>
      It will produce the following result
      pow = 100000000000000000000000000000000000000000000000000000000

      Example: Exponentiation operator with non-numeric values

      When you use the non-numeric value as an operand of the exponentiation operator, it converts the value to numeric and returns the result. If the operand can't be converted to the numeric value, it returns NaN in the output.
      Here, it converts the '[]' to 0 and gives the correct result. The numeric value for the string '2a' is NaN, so it prints the NaN in the output. If the array contains a single numeric element, it parses the element. Otherwise, it evaluates NaN if the array contains multiple elements.
      <html>
      <body>
      <div id = "output"></div>
      <script>
      const output = document.getElementById("output");
      let pow = 2 ** []; // Number([]) = 0
      output .innerHTML = "10 ** [] = " + pow + "<br>";
      pow = [] ** 2; // Number([]) = 0
      output.innerHTML += "[] ** 2 = " + pow + "<br>";
      pow = 2 ** [2]; // Number([2]) = 2
      output.innerHTML += "10 ** [2] = " + pow + "<br>";
      pow = "2" ** 2; // Number("2") = 2
      output.innerHTML += "2 ** 2 = " + pow + "<br>";
      pow = "2a" ** 2; // Number("2a") = NaN
      output.innerHTML += "2a ** 2 = " + pow + "<br>";
      pow = [2, 3] ** 2; // Number([2, 3]) = NaN
      output.innerHTML += "[2, 3] ** 2 = " + pow + "<br>";
      </script>
      </body>
      </html>
      It will produce the following result
      10 ** [] = 1
      [] ** 2 = 0
      10 ** [2] = 4
      2 ** 2 = 4
      2a ** 2 = NaN
      [2, 3] ** 2 = NaN
      The exponentiation operator is an alternative to the pow() method of the Math() object.
      Print Page