Stage 4
Classification: Syntactic Change Semantic Change
Human Validated: KW
Title: Exponentiation operator
Authors: Rick Waldron
Champions: Rick Waldron
Last Presented: January 2016
Stage Upgrades:
Stage 1: NA
Stage 2: 2015-02-23
Stage 2.7: NA
Stage 3: 2015-07-29
Stage 4: 2022-01-24
Last Commit: 2022-01-24
Topics: numbers
Keywords: arithmetic
GitHub Link: https://github.com/tc39/proposal-exponentiation-operator
GitHub Note Link: https://github.com/tc39/notes/blob/HEAD/meetings/2016-01/jan-28.md#5xviii-exponentiation-operator-rw

Proposal Description:

Exponentiation Operator

Specification

Status

Stage 4

Implementation Progress

Authors

  • Rick Waldron
  • Claude Pache
  • Brendan Eich

Reviewers

  • Brian Terlson
  • Erik Arvidsson
  • Dmitry Lomov
  • Cait Potter
  • Jason Orendorff
  • Waldemar Horwat

Informative

  • Commonly used in mathematics, physics and robotics.
  • Infix notation is more succinct than function notation, which makes it more preferable

Prior Art

  • Python
    • math.pow(x, y)
    • x ** y
  • CoffeeScript
    • x ** y
  • F#
    • x ** y
  • Ruby
    • x ** y
  • Perl
    • x ** y
  • Lua, Basic, MATLAB, etc.
    • x ^ y

Usage

// x ** y
 
let squared = 2 ** 2;
// same as: 2 * 2
 
let cubed = 2 ** 3;
// same as: 2 * 2 * 2
 
// x **= y
 
let a = 2;
a **= 2;
// same as: a = a * a;
 
 
 
let b = 3;
b **= 3;
// same as: b = b * b * b;
 

Render Spec

ecmarkup spec/index.html index.html