"3 + 4 *5 - 6 +2 "
// teilt den String mit Hilfe eines regulären Ausdrucks in ein Array,
// dessen Komponenten zwischen Zahl und Operator wechseln: ["3", "+", "4", "*", "5", "-", "6", "+", "2"]
.match(/(\d+)|([\+\*\-\/\:])/g)
// reduce reduziert ein Array auf einen einzigen Wert (siehe: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce)
.reduce((accu, curr) => {
return isNaN(curr) // Handelt es sich beim aktuellen Element NICHT um eine Zahl
? (accu + (curr === ':' ? '/' : curr)) // keine Zahl => Operator an aktuellen String anhängen
: eval(accu + curr) // aktuelle Zahl an String anhänen und auswerten (eval)
});