Перевод из инфиксной в постфиксную запись на Javascript по книге Лафоре

Пытаюсь реализовать алгоритм по книге Лафоре. Пока только для однозначных чисел. Для выражения 5+4+1+2*3 получается требуемое 54+1+23*+, а вот 5+4+1+2*3-9 выдает 54+1+23*9-+ вместо 54+1+23*+9-. Что не так?

ops = {'+':1, '-':1, '/':2, '*':2};
    s = '1+2-3+4-5*6-7'.split('');
    stack = [];
    out = '';
    for (var i = 0; i < s.length; i++) {
        if(!isNaN(s[i])){
            out += s[i];
        }
        if(isNaN(s[i])){
            a = stack[stack.length - 1];
            if(stack.length == 0) {stack.push(s[i])}
            else {
                if(ops[a] >= ops[s[i]]) {
                    out += a;
                    stack.pop();
                    stack.push(s[i]);
                }
                if(ops[a] < ops[s[i]]) {
                    console.log('элемент ' +s[i] + ' > ' + ' кон. стека ' + a);
                    stack.push(s[i]);
                }
            }
        }
        if (i == s.length - 1) {
            out += stack.pop();
            console.log('конец строки',stack)
            out += stack.pop();
            console.log('конец строки',stack)
        }
        console.log(s[i],'out',out, 'stack', stack);
    }
    console.log('out is',out);

Ответы (0 шт):