JSFiddle - React, Tailwind, and code Playground

HTML

<div id="out">

</div>

JavaScript

const calculator = {
	'*': (a, b) => a * b,
}

function calculate (expression) {
  
  const expressionCharacterArray = expression.split(' ')
    .map(
      expressionCharacter => !isNaN(parseFloat(expressionCharacter))
      ?
      parseFloat(expressionCharacter)
      :
      expressionCharacter
    ); 
  
  const expressionResult = expressionCharacterArray
          .reduce(
            (accumulator, expressionCharacter) => {
              if (calculator[expressionCharacter]) {
                const secondOperand = accumulator.pop();
                const firstOperand = accumulator.pop();

                return calculator[expressionCharacter](firstOperand, secondOperand)
              }
              else {
                return [...accumulator, expressionCharacter]
              }
            }
            , []
          );
  
  return expressionResult.pop();
}

document.getElementById('out').innerHTML = numberToOrdinal(21)