Exponentiation in JavaScript: A Beginner’s Guide
Tags: javascript, beginners, typescript, coding
Published: 2023-06-24 18:12:49

## Introduction


Exponentiation refers to a mathematical process of multiplying a number by itself, raised to the power of another number.

If, for instance, we raise `2` to the power of `3`, we calculate it as `2 * 2 * 2`, which gives us the result of `8`.

In JavaScript, you can use either the `**` operator introduced in ES6 or the method `Math.pow()` when evaluating exponents.

> Before starting, please keep in mind that this operator `^` is the [Bitwise XOR](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_XOR) Operator. **Don't use it for exponentiation**, as it is a common confusion.

## Using The \*\* Operator


The `**` operator is used to perform exponentiation in JavaScript. It takes two operands: the base and the exponent.

The base _(the left-hand side)_ is the number that is being raised to power, and the exponent _(the right-hand side)_ is the power itself.

Have a look at the following example:

```javascript
let result = 2 ** 3 // 8; 
```


In this example, `2` is the base and `3` is the exponent. The `**` operator raises `2` to the power of `3`, which is `8`.

## The Precedence Of The \*\* Operator


Keep in mind, the `**` operator has higher precedence than the multiplication and division operators.

This means that if you have an expression that includes both multiplication and exponentiation, the exponentiation will be evaluated first.

Here’s an example:

```javascript
let result1 = 2 * 3 ** 2, // 18
    result2 = (2 * 3) ** 2; // 36
```


In this example, regarding `result1`, `3` is raised to the power of `2` first, resulting in `9`. Then, the multiplication is performed, resulting in a final value of `18`.

But if you want to precede the multiplication operator in the case of `result2`, you have to enclose the multiplication operation between `()`.

Another example, if you want to find the nth roots:

```javascript
let result1 = 8 ** 1 / 3, // 2.6666666666666665
    result2 = 8 ** (1 / 3); // 2
```


## Using Math.Pow() Method


In addition to the `**` operator, JavaScript also provides the `Math.pow()` method for performing exponentiation.

Like the `**` operator, this method takes two arguments: the base and the exponent.

Here’s an example of how to use `Math.pow()`:

```javascript
let result = Math.pow(2, 3); // 8
```


In this example, `2` is the base and `3` is the exponent. The `Math.pow()` method raises `2` to the power of `3`, which is `8`.

## Math.pow() Method vs ** Operator

Actually, there is a slight difference between them regarding the `BigInt` type.

The `Math.pow()` method doesn't support the `BigInt` type, however, the `**` operator supports it. Take a look at the following example:

```javascript
let result1 = 2n ** 4n, // 16n
  result2 = Math.pow(2n, 4n); // Uncaught TypeError: Cannot convert a BigInt value to a number
```

> In JavaScript, the `BigInt` is created like `2n` or `BigInt(2)`

## Which One Should You Use?

As you saw, there are no big differences between `Math.pow()` and the `**` operator.

However, if you work with `BigInt` values, go ahead with `**` operator, rather than such a case use whatever you want.


Keep in mind, if you chose the `**` operator, just take care of the precedence.

## Conclusion


Exponentiation is a fundamental mathematical operation. And, in JavaScript, exponentiation can be performed using the `**` operator or the `Math.pow()` method.

In this article, we knew how to use both, the `**` operator and the `Math.pow()` method.

Then, we knew that there are no big differences between them, so it is up to you to use either of them.

## Before you leave


If you found this article useful, check out these articles as well:

*   [4 Ways To Handle Asynchronous JavaScript](https://mayallo.com/asynchronous-javascript/)
    
*   [Open-Closed Principle: The Hard Parts](https://mayallo.com/solid-open-closed-principle/)
    
*   [How To Use GraphQL Directives Efficiently?](https://mayallo.com/graphql-directives/)
    

Thanks a lot for staying with me up till this point. I hope you enjoy reading this article.