Edit in JSFiddle

var expression = "4+(13/6)",
    tokenizer = expression.split("");
function parse(tokenizer){
    return expr(tokenizer) && tokenizer.length===0;
}
function expr(tokenizer){
    console.log("Expression",tokenizer.join(""));
    var valid = term(tokenizer);
    if(tokenizer[0] !== "+" && tokenizer[0] !== "-"){
        console.log("Expr: Valid is",valid,tokenizer[0]);
        return valid; // this is the term case and we're done
    }
    console.log("plus/min");
    var count=0;
    while(tokenizer[0] ==="+" || tokenizer[0] ==="-"){//still got expression
        count++;
        tokenizer.shift();//get rid of the + or -
        valid =valid && term(tokenizer);//handle the next term
    }
    return valid && (count>0);//valid and done
}

function term(tokenizer){
    console.log("Term",tokenizer.join(""));
    var valid = primary(tokenizer);
    if(tokenizer[0]!=="/" && tokenizer[0] !=="*"){
        console.log("Term: Valid is",valid,tokenizer[0]);
        return valid;//primary case
    }
    console.log("term/mul");
    var count=0;
    while(tokenizer[0] ==="/" || tokenizer[0] ==="*"){//still got terms
        tokenizer.shift();//get rid of * or /
        valid = valid && primary(tokenizer);
        count++;
    }
    return valid&&(count>0);
}

function primary(tokenizer){
    console.log("Primary",tokenizer.join(""));
    if(tokenizer[0] === "("){ //expression 
       tokenizer.shift();
       var exp = expr(tokenizer);
       console.log("Removed extra )",tokenizer,exp);
       return exp && (tokenizer.shift()===")");//was valid expression and ended with )
    }
    var count = 0;
    while(/^[0-9]$/.test(tokenizer[0])){
        count++;
        tokenizer.shift();
    }
    console.log("Valid is",count>0,tokenizer[0]);
    return count>0;
}
parse(tokenizer);