Perchè non usare l'eval? Dopotutto parliamo di javascript, non dobbiamo preoccuparci dei malintenzionati in quanto è clientside.
Basterebbe un semplice:
JavaScript:
var risultato = eval(input);
In questo modo è anche possibile eseguire più operazioni insieme, e sarà possibile eseguire operazioni più complesse sostituendo parti di stringa con le funzioni del javascript (es. "34^2" -> "Math.pow(34,2)").