# Stack | Set 4 (Evaluation of Postfix Expression)

• Difficulty Level : Easy
• Last Updated : 10 Nov, 2021

The Postfix notation is used to represent algebraic expressions. The expressions written in postfix form are evaluated faster compared to infix notation as parenthesis are not required in postfix. We have discussed infix to postfix conversion. In this post, evaluation of postfix expressions is discussed.

Following is an algorithm for evaluation postfix expressions.
1) Create a stack to store operands (or values).
2) Scan the given expression and do the following for every scanned element.
…..a) If the element is a number, push it into the stack
…..b) If the element is an operator, pop operands for the operator from the stack. Evaluate the operator and push the result back to the stack
3) When the expression is ended, the number in the stack is the final answer

Become a success story instead of just reading about them. Prepare for coding interviews at Amazon and other top product-based companies with our Amazon Test Series. Includes topic-wise practice questions on all important DSA topics along with 10 practice contests of 2 hours each. Designed by industry experts that will surely help you practice and sharpen your programming skills. Wait no more, start your preparation today!

Example:
Let the given expression be “2 3 1 * + 9 -“. We scan all elements one by one.
1) Scan ‘2’, it’s a number, so push it to stack. Stack contains ‘2’
2) Scan ‘3’, again a number, push it to stack, stack now contains ‘2 3’ (from bottom to top)
3) Scan ‘1’, again a number, push it to stack, stack now contains ‘2 3 1’
4) Scan ‘*’, it’s an operator, pop two operands from stack, apply the * operator on operands, we get 3*1 which results in 3. We push the result ‘3’ to stack. The stack now becomes ‘2 3’.
5) Scan ‘+’, it’s an operator, pop two operands from stack, apply the + operator on operands, we get 3 + 2 which results in 5. We push the result ‘5’ to stack. The stack now becomes ‘5’.
6) Scan ‘9’, it’s a number, we push it to the stack. The stack now becomes ‘5 9’.
7) Scan ‘-‘, it’s an operator, pop two operands from stack, apply the – operator on operands, we get 5 – 9 which results in -4. We push the result ‘-4’ to the stack. The stack now becomes ‘-4’.
8) There are no more elements to scan, we return the top element from the stack (which is the only element left in a stack).

Below is the implementation of the above algorithm.

## C++

 `// C++ program to evaluate value of a postfix expression``#include ``#include ` `using` `namespace` `std;` `// Stack type``struct` `Stack``{``    ``int` `top;``    ``unsigned capacity;``    ``int``* array;``};` `// Stack Operations``struct` `Stack* createStack( unsigned capacity )``{``    ``struct` `Stack* stack = (``struct` `Stack*) ``malloc``(``sizeof``(``struct` `Stack));` `    ``if` `(!stack) ``return` `NULL;` `    ``stack->top = -1;``    ``stack->capacity = capacity;``    ``stack->array = (``int``*) ``malloc``(stack->capacity * ``sizeof``(``int``));` `    ``if` `(!stack->array) ``return` `NULL;` `    ``return` `stack;``}` `int` `isEmpty(``struct` `Stack* stack)``{``    ``return` `stack->top == -1 ;``}` `char` `peek(``struct` `Stack* stack)``{``    ``return` `stack->array[stack->top];``}` `char` `pop(``struct` `Stack* stack)``{``    ``if` `(!isEmpty(stack))``        ``return` `stack->array[stack->top--] ;``    ``return` `'\$'``;``}` `void` `push(``struct` `Stack* stack, ``char` `op)``{``    ``stack->array[++stack->top] = op;``}`  `// The main function that returns value of a given postfix expression``int` `evaluatePostfix(``char``* ``exp``)``{``    ``// Create a stack of capacity equal to expression size``    ``struct` `Stack* stack = createStack(``strlen``(``exp``));``    ``int` `i;` `    ``// See if stack was created successfully``    ``if` `(!stack) ``return` `-1;` `    ``// Scan all characters one by one``    ``for` `(i = 0; ``exp``[i]; ++i)``    ``{``        ``// If the scanned character is an operand (number here),``        ``// push it to the stack.``        ``if` `(``isdigit``(``exp``[i]))``            ``push(stack, ``exp``[i] - ``'0'``);` `        ``// If the scanned character is an operator, pop two``        ``// elements from stack apply the operator``        ``else``        ``{``            ``int` `val1 = pop(stack);``            ``int` `val2 = pop(stack);``            ``switch` `(``exp``[i])``            ``{``            ``case` `'+'``: push(stack, val2 + val1); ``break``;``            ``case` `'-'``: push(stack, val2 - val1); ``break``;``            ``case` `'*'``: push(stack, val2 * val1); ``break``;``            ``case` `'/'``: push(stack, val2/val1); ``break``;``            ``}``        ``}``    ``}``    ``return` `pop(stack);``}` `// Driver program to test above functions``int` `main()``{``    ``char` `exp``[] = ``"231*+9-"``;``    ``cout<<``"postfix evaluation: "``<< evaluatePostfix(``exp``);``    ``return` `0;``}`

## C

 `// C program to evaluate value of a postfix expression``#include ``#include ``#include ``#include ` `// Stack type``struct` `Stack``{``    ``int` `top;``    ``unsigned capacity;``    ``int``* array;``};` `// Stack Operations``struct` `Stack* createStack( unsigned capacity )``{``    ``struct` `Stack* stack = (``struct` `Stack*) ``malloc``(``sizeof``(``struct` `Stack));` `    ``if` `(!stack) ``return` `NULL;` `    ``stack->top = -1;``    ``stack->capacity = capacity;``    ``stack->array = (``int``*) ``malloc``(stack->capacity * ``sizeof``(``int``));` `    ``if` `(!stack->array) ``return` `NULL;` `    ``return` `stack;``}` `int` `isEmpty(``struct` `Stack* stack)``{``    ``return` `stack->top == -1 ;``}` `char` `peek(``struct` `Stack* stack)``{``    ``return` `stack->array[stack->top];``}` `char` `pop(``struct` `Stack* stack)``{``    ``if` `(!isEmpty(stack))``        ``return` `stack->array[stack->top--] ;``    ``return` `'\$'``;``}` `void` `push(``struct` `Stack* stack, ``char` `op)``{``    ``stack->array[++stack->top] = op;``}`  `// The main function that returns value of a given postfix expression``int` `evaluatePostfix(``char``* ``exp``)``{``    ``// Create a stack of capacity equal to expression size``    ``struct` `Stack* stack = createStack(``strlen``(``exp``));``    ``int` `i;` `    ``// See if stack was created successfully``    ``if` `(!stack) ``return` `-1;` `    ``// Scan all characters one by one``    ``for` `(i = 0; ``exp``[i]; ++i)``    ``{``        ``// If the scanned character is an operand (number here),``        ``// push it to the stack.``        ``if` `(``isdigit``(``exp``[i]))``            ``push(stack, ``exp``[i] - ``'0'``);` `        ``// If the scanned character is an operator, pop two``        ``// elements from stack apply the operator``        ``else``        ``{``            ``int` `val1 = pop(stack);``            ``int` `val2 = pop(stack);``            ``switch` `(``exp``[i])``            ``{``            ``case` `'+'``: push(stack, val2 + val1); ``break``;``            ``case` `'-'``: push(stack, val2 - val1); ``break``;``            ``case` `'*'``: push(stack, val2 * val1); ``break``;``            ``case` `'/'``: push(stack, val2/val1); ``break``;``            ``}``        ``}``    ``}``    ``return` `pop(stack);``}` `// Driver program to test above functions``int` `main()``{``    ``char` `exp``[] = ``"231*+9-"``;``    ``printf` `(``"postfix evaluation: %d"``, evaluatePostfix(``exp``));``    ``return` `0;``}`

## Java

 `// Java program to evaluate value of a postfix expression` `import` `java.util.Stack;` `public` `class` `Test``{``    ``// Method to evaluate value of a postfix expression``    ``static` `int` `evaluatePostfix(String exp)``    ``{``        ``//create a stack``        ``Stack stack=``new` `Stack<>();``        ` `        ``// Scan all characters one by one``        ``for``(``int` `i=``0``;i

## Python

 `# Python program to evaluate value of a postfix expression` `# Class to convert the expression``class` `Evaluate:``    ` `    ``# Constructor to initialize the class variables``    ``def` `__init__(``self``, capacity):``        ``self``.top ``=` `-``1``        ``self``.capacity ``=` `capacity``        ``# This array is used a stack``        ``self``.array ``=` `[]``    ` `    ``# check if the stack is empty``    ``def` `isEmpty(``self``):``        ``return` `True` `if` `self``.top ``=``=` `-``1` `else` `False``    ` `    ``# Return the value of the top of the stack``    ``def` `peek(``self``):``        ``return` `self``.array[``-``1``]``    ` `    ``# Pop the element from the stack``    ``def` `pop(``self``):``        ``if` `not` `self``.isEmpty():``            ``self``.top ``-``=` `1``            ``return` `self``.array.pop()``        ``else``:``            ``return` `"\$"``    ` `    ``# Push the element to the stack``    ``def` `push(``self``, op):``        ``self``.top ``+``=` `1``        ``self``.array.append(op)`  `    ``# The main function that converts given infix expression``    ``# to postfix expression``    ``def` `evaluatePostfix(``self``, exp):``        ` `        ``# Iterate over the expression for conversion``        ``for` `i ``in` `exp:``            ` `            ``# If the scanned character is an operand``            ``# (number here) push it to the stack``            ``if` `i.isdigit():``                ``self``.push(i)` `            ``# If the scanned character is an operator,``            ``# pop two elements from stack and apply it.``            ``else``:``                ``val1 ``=` `self``.pop()``                ``val2 ``=` `self``.pop()``                ``self``.push(``str``(``eval``(val2 ``+` `i ``+` `val1)))` `        ``return` `int``(``self``.pop())``                `  `            ` `# Driver program to test above function``exp ``=` `"231*+9-"``obj ``=` `Evaluate(``len``(exp))``print` `"postfix evaluation: %d"``%``(obj.evaluatePostfix(exp))``# This code is contributed by Nikhil Kumar Singh(nickzuck_007)`

## C#

 `// C# program to evaluate value of a postfix expression``using` `System;``using` `System.Collections;` `namespace` `GFG``{``    ``class` `Geek``    ``{``        ``//Main() method``        ``static` `void` `Main()``        ``{``            ``Geek e = ``new` `Geek();``            ``e.v = (``"231*+9-"``);``            ``e.expression();``            ``Console.WriteLine(``"postfix evaluation: "` `+ e.answer);``            ``Console.Read();``        ``}` `        ``public` `string` `v;``        ``//'v' is variable to store the string value` `        ``public` `string` `answer;``        ``Stack i = ``new` `Stack();``        ``//'Stack()' is inbuilt function for namespace 'System.Collections'` `        ``public` `void` `expression()``        ``//evaluation method``        ``{``            ``int` `a, b, ans;``            ``for` `(``int` `j = 0; j < v.Length; j++)``            ``//'v.Length' means length of the string``            ``{``                ``String c = v.Substring(j, 1);``                ``if` `(c.Equals(``"*"``))``                ``{``                    ``String sa = (String)i.Pop();``                    ``String sb = (String)i.Pop();``                    ``a = Convert.ToInt32(sb);``                    ``b = Convert.ToInt32(sa);``                    ``ans = a * b;``                    ``i.Push(ans.ToString());` `                ``}``                ``else` `if` `(c.Equals(``"/"``))``                ``{``                    ``String sa = (String)i.Pop();``                    ``String sb = (String)i.Pop();``                    ``a = Convert.ToInt32(sb);``                    ``b = Convert.ToInt32(sa);``                    ``ans = a / b;``                    ``i.Push(ans.ToString());``                ``}``                ``else` `if` `(c.Equals(``"+"``))``                ``{``                    ``String sa = (String)i.Pop();``                    ``String sb = (String)i.Pop();``                    ``a = Convert.ToInt32(sb);``                    ``b = Convert.ToInt32(sa);``                    ``ans = a + b;``                    ``i.Push(ans.ToString());` `                ``}``                ``else` `if` `(c.Equals(``"-"``))``                ``{``                    ``String sa = (String)i.Pop();``                    ``String sb = (String)i.Pop();``                    ``a = Convert.ToInt32(sb);``                    ``b = Convert.ToInt32(sa);``                    ``ans = a - b;``                    ``i.Push(ans.ToString());` `                ``}``                ``else``                ``{``                    ``i.Push(v.Substring(j, 1));``                ``}``            ``}``            ``answer = (String)i.Pop();``        ``}``    ``}``}`

## Javascript

 ``

Output:

`postfix evaluation: -4`

The time complexity of the evaluation algorithm is O(n) where n is a number of characters in the input expression.

There are the following limitations of the above implementation.
1) It supports only 4 binary operators ‘+’, ‘*’, ‘-‘ and ‘/’. It can be extended for more operators by adding more switch cases.
2) The allowed operands are only single-digit operands. The program can be extended for multiple digits by adding a separator-like space between all elements (operators and operands) of the given expression.

Below given is the extended program which allows operands to have multiple digits.

## C++

 `// C++ program to evaluate value of a postfix``// expression having multiple digit operands``#include ``using` `namespace` `std;` `// Stack type``class` `Stack``{``    ``public``:``    ``int` `top;``    ``unsigned capacity;``    ``int``* array;``};` `// Stack Operations``Stack* createStack( unsigned capacity )``{``    ``Stack* stack = ``new` `Stack();` `    ``if` `(!stack) ``return` `NULL;` `    ``stack->top = -1;``    ``stack->capacity = capacity;``    ``stack->array = ``new` `int``[(stack->capacity * ``sizeof``(``int``))];` `    ``if` `(!stack->array) ``return` `NULL;` `    ``return` `stack;``}` `int` `isEmpty(Stack* stack)``{``    ``return` `stack->top == -1 ;``}` `int` `peek(Stack* stack)``{``    ``return` `stack->array[stack->top];``}` `int` `pop(Stack* stack)``{``    ``if` `(!isEmpty(stack))``        ``return` `stack->array[stack->top--] ;``    ``return` `'\$'``;``}` `void` `push(Stack* stack,``int` `op)``{``    ``stack->array[++stack->top] = op;``}`  `// The main function that returns value``// of a given postfix expression``int` `evaluatePostfix(``char``* ``exp``)``{``    ``// Create a stack of capacity equal to expression size``    ``Stack* stack = createStack(``strlen``(``exp``));``    ``int` `i;` `    ``// See if stack was created successfully``    ``if` `(!stack) ``return` `-1;` `    ``// Scan all characters one by one``    ``for` `(i = 0; ``exp``[i]; ++i)``    ``{``        ``//if the character is blank space then continue``        ``if``(``exp``[i] == ``' '``)``continue``;``        ` `        ``// If the scanned character is an``        ``// operand (number here),extract the full number``        ``// Push it to the stack.``        ``else` `if` `(``isdigit``(``exp``[i]))``        ``{``            ``int` `num=0;``            ` `            ``//extract full number``            ``while``(``isdigit``(``exp``[i]))``            ``{``            ``num = num * 10 + (``int``)(``exp``[i] - ``'0'``);``                ``i++;``            ``}``            ``i--;``            ` `            ``//push the element in the stack``            ``push(stack,num);``        ``}``        ` `        ``// If the scanned character is an operator, pop two``        ``// elements from stack apply the operator``        ``else``        ``{``            ``int` `val1 = pop(stack);``            ``int` `val2 = pop(stack);``            ` `            ``switch` `(``exp``[i])``            ``{``            ``case` `'+'``: push(stack, val2 + val1); ``break``;``            ``case` `'-'``: push(stack, val2 - val1); ``break``;``            ``case` `'*'``: push(stack, val2 * val1); ``break``;``            ``case` `'/'``: push(stack, val2/val1); ``break``;``            ` `            ``}``        ``}``    ``}``    ``return` `pop(stack);``}` `// Driver code``int` `main()``{``    ``char` `exp``[] = ``"100 200 + 2 / 5 * 7 +"``;``    ``cout << evaluatePostfix(``exp``);``    ``return` `0;``}` `// This code is contributed by rathbhupendra`

## C

 `// C program to evaluate value of a postfix``// expression having multiple digit operands``#include ``#include ``#include ``#include ` `// Stack type``struct` `Stack``{``    ``int` `top;``    ``unsigned capacity;``    ``int``* array;``};` `// Stack Operations``struct` `Stack* createStack( unsigned capacity )``{``    ``struct` `Stack* stack = (``struct` `Stack*) ``malloc``(``sizeof``(``struct` `Stack));` `    ``if` `(!stack) ``return` `NULL;` `    ``stack->top = -1;``    ``stack->capacity = capacity;``    ``stack->array = (``int``*) ``malloc``(stack->capacity * ``sizeof``(``int``));` `    ``if` `(!stack->array) ``return` `NULL;` `    ``return` `stack;``}` `int` `isEmpty(``struct` `Stack* stack)``{``    ``return` `stack->top == -1 ;``}` `int` `peek(``struct` `Stack* stack)``{``    ``return` `stack->array[stack->top];``}` `int` `pop(``struct` `Stack* stack)``{``    ``if` `(!isEmpty(stack))``        ``return` `stack->array[stack->top--] ;``    ``return` `'\$'``;``}` `void` `push(``struct` `Stack* stack,``int` `op)``{``    ``stack->array[++stack->top] = op;``}`  `// The main function that returns value``// of a given postfix expression``int` `evaluatePostfix(``char``* ``exp``)``{``    ``// Create a stack of capacity equal to expression size``    ``struct` `Stack* stack = createStack(``strlen``(``exp``));``    ``int` `i;` `    ``// See if stack was created successfully``    ``if` `(!stack) ``return` `-1;` `    ``// Scan all characters one by one``    ``for` `(i = 0; ``exp``[i]; ++i)``    ``{``        ``//if the character is blank space then continue``        ``if``(``exp``[i]==``' '``)``continue``;``        ` `        ``// If the scanned character is an``        ``// operand (number here),extract the full number``        ``// Push it to the stack.``        ``else` `if` `(``isdigit``(``exp``[i]))``        ``{``            ``int` `num=0;``            ` `            ``//extract full number``            ``while``(``isdigit``(``exp``[i]))``            ``{``            ``num=num*10 + (``int``)(``exp``[i]-``'0'``);``                ``i++;``            ``}``            ``i--;``            ` `            ``//push the element in the stack``            ``push(stack,num);``        ``}``        ` `        ``// If the scanned character is an operator, pop two``        ``// elements from stack apply the operator``        ``else``        ``{``            ``int` `val1 = pop(stack);``            ``int` `val2 = pop(stack);``            ` `            ``switch` `(``exp``[i])``            ``{``            ``case` `'+'``: push(stack, val2 + val1); ``break``;``            ``case` `'-'``: push(stack, val2 - val1); ``break``;``            ``case` `'*'``: push(stack, val2 * val1); ``break``;``            ``case` `'/'``: push(stack, val2/val1); ``break``;``            ` `            ``}``        ``}``    ``}``    ``return` `pop(stack);``}` `// Driver program to test above functions``int` `main()``{``    ``char` `exp``[] = ``"100 200 + 2 / 5 * 7 +"``;``    ``printf` `(``"%d"``, evaluatePostfix(``exp``));``    ``return` `0;``}` `// This code is contributed by Arnab Kundu`

## Java

 `// Java program to evaluate value of a postfix``// expression having multiple digit operands``import` `java.util.Stack;` `class` `Test1``{``    ``// Method to evaluate value of a postfix expression``    ``static` `int` `evaluatePostfix(String exp)``    ``{``        ``//create a stack``        ``Stack stack = ``new` `Stack<>();``        ` `        ``// Scan all characters one by one``        ``for``(``int` `i = ``0``; i < exp.length(); i++)``        ``{``            ``char` `c = exp.charAt(i);``            ` `            ``if``(c == ``' '``)``            ``continue``;``            ` `            ``// If the scanned character is an operand``            ``// (number here),extract the number``            ``// Push it to the stack.``            ``else` `if``(Character.isDigit(c))``            ``{``                ``int` `n = ``0``;``                ` `                ``//extract the characters and store it in num``                ``while``(Character.isDigit(c))``                ``{``                    ``n = n*``10` `+ (``int``)(c-``'0'``);``                    ``i++;``                    ``c = exp.charAt(i);``                ``}``                ``i--;` `                ``//push the number in stack``                ``stack.push(n);``            ``}``            ` `            ``// If the scanned character is an operator, pop two``            ``// elements from stack apply the operator``            ``else``            ``{``                ``int` `val1 = stack.pop();``                ``int` `val2 = stack.pop();``                ` `                ``switch``(c)``                ``{``                    ``case` `'+'``:``                    ``stack.push(val2+val1);``                    ``break``;``                    ` `                    ``case` `'-'``:``                    ``stack.push(val2- val1);``                    ``break``;``                    ` `                    ``case` `'/'``:``                    ``stack.push(val2/val1);``                    ``break``;``                    ` `                    ``case` `'*'``:``                    ``stack.push(val2*val1);``                    ``break``;``            ``}``            ``}``        ``}``        ``return` `stack.pop();``    ``}``    ` `    ``// Driver program to test above functions``    ``public` `static` `void` `main(String[] args)``    ``{``        ``String exp = ``"100 200 + 2 / 5 * 7 +"``;``        ``System.out.println(evaluatePostfix(exp));``    ``}``}` `// This code is contributed by Arnab Kundu`

## Python

 `# Python program to evaluate value of a postfix``# expression with integers containing multiple digits` `class` `evalpostfix:``    ``def` `__init__(``self``):``        ``self``.stack ``=``[]``        ``self``.top ``=``-``1``    ``def` `pop(``self``):``        ``if` `self``.top ``=``=``-``1``:``            ``return``        ``else``:``            ``self``.top``-``=` `1``            ``return` `self``.stack.pop()``    ``def` `push(``self``, i):``        ``self``.top``+``=` `1``        ``self``.stack.append(i)` `    ``def` `centralfunc(``self``, ab):``        ``for` `i ``in` `ab:` `            ``# if the component of the list is an integer``            ``try``:``                ``self``.push(``int``(i))``            ``# if the component of the list is not an integer,``            ``# it must be an operator. Using ValueError, we can``            ``# evaluate components of the list other than type int``            ``except` `ValueError:``                ``val1 ``=` `self``.pop()``                ``val2 ``=` `self``.pop()` `                ``# switch statement to perform operation``                ``switcher ``=``{``'+'``:val2 ``+` `val1, ``'-'``:val2``-``val1, ``'*'``:val2 ``*` `val1, ``'/'``:val2 ``/` `val1, ``'^'``:val2``*``*``val1}``                ``self``.push(switcher.get(i))``        ``return` `int``(``self``.pop())` `str` `=``'100 200 + 2 / 5 * 7 +'` `# splitting the given string to obtain``# integers and operators into a list``strconv ``=` `str``.split(``' '``)``obj ``=` `evalpostfix()``print``(obj.centralfunc(strconv))` `# This code is contributed by Amarnath Reddy`

## C#

 `// C# program to evaluate value of a postfix``// expression having multiple digit operands``using` `System;``using` `System.Collections.Generic;` `class` `GFG``{``// Method to evaluate value of``// a postfix expression``public` `static` `int` `evaluatePostfix(``string` `exp)``{``    ``// create a stack``    ``Stack<``int``> stack = ``new` `Stack<``int``>();` `    ``// Scan all characters one by one``    ``for` `(``int` `i = 0; i < exp.Length; i++)``    ``{``        ``char` `c = exp[i];` `        ``if` `(c == ``' '``)``        ``{``            ``continue``;``        ``}` `        ``// If the scanned character is an ``        ``// operand (number here),extract``        ``// the number. Push it to the stack.``        ``else` `if` `(``char``.IsDigit(c))``        ``{``            ``int` `n = 0;` `            ``// extract the characters and``            ``// store it in num``            ``while` `(``char``.IsDigit(c))``            ``{``                ``n = n * 10 + (``int``)(c - ``'0'``);``                ``i++;``                ``c = exp[i];``            ``}``            ``i--;` `            ``// push the number in stack``            ``stack.Push(n);``        ``}` `        ``// If the scanned character is``        ``// an operator, pop two elements``        ``// from stack apply the operator``        ``else``        ``{``            ``int` `val1 = stack.Pop();``            ``int` `val2 = stack.Pop();` `            ``switch` `(c)``            ``{``                ``case` `'+'``:``                ``stack.Push(val2 + val1);``                ``break``;` `                ``case` `'-'``:``                ``stack.Push(val2 - val1);``                ``break``;` `                ``case` `'/'``:``                ``stack.Push(val2 / val1);``                ``break``;` `                ``case` `'*'``:``                ``stack.Push(val2 * val1);``                ``break``;``            ``}``        ``}``    ``}``    ``return` `stack.Pop();``}` `// Driver Code``public` `static` `void` `Main(``string``[] args)``{``    ``string` `exp = ``"100 200 + 2 / 5 * 7 +"``;``    ``Console.WriteLine(evaluatePostfix(exp));``}``}` `// This code is contributed by Shrikant13`

## Javascript

 ``

Output :

`757`

References:
http://www.cs.nthu.edu.tw/~wkhon/ds/ds10/tutorial/tutorial2.pdf