code: function orderTokens(tokens) {
  	const operators = [], operands = [];
  	let noperators = 0;
  
  	for (let i = 0, token; i < tokens.length; i++) {
  		token = tokens[i];
  
  		if (token.type === NUMBER) {
  			operands.push(token);
  		} else {
  			noperators += token.type === OP1 ? 1 : 2;
  
  			while (operators.length) {
  				if (token.priority <= operators[operators.length - 1].priority) {
  					operands.push(operators.pop());
  				} else {
  					break;
  				}
  			}
  
  			operators.push(token);
  		}
  	}
  
  	return noperators + 1 === operands.length + operators.length
  		? operands.concat(operators.reverse())
  		: null /* parity */;
  }
docs: Orders parsed tokens (operands and operators) in given array so that they are
  laid off in order of execution
  @param  {Token[]} tokens
  @return {Token[]}