private double parseList() throws InvalidEquationException{
		//Create a variable to keep track of last relevant rank
		int lastRank = 0;


		//For each index of the list
		for(int i = 0; i < expList.size(); i++){
			//If the next rank is 0 it is a numerical expression and should just be added without question
			if(expList.get(i).getRank() == 0){
				//Add to stack
				expStack.push(expList.get(i));
			}
			//else If the nextRank in the list is greater than the last rank add it to the stack
			else if(expList.get(i).getRank() > lastRank){
				//Add to stack
				expStack.push(expList.get(i));
				//Track the lastRank
				lastRank = expList.get(i).getRank();
			}
			//Else, the nextRank is less than or equal to the lastRank
			else{
				//Set the lastRank
				lastRank = solveStack(expList.get(i).getRank());

				//Decrement i to re-visit this expression
				i--;
			}

		}

		//If the stack contains more than 1 thing, solve it
		if(expStack.size() > 1)
			solveStack(0);

		try{
			//Return the final numericalExpression's value on the stack
			return expStack.get(0).evaluate();
		}
		catch(ArrayIndexOutOfBoundsException e){
			throw new InvalidEquationException();
		}
		catch(NullPointerException nPE){
			throw new InvalidEquationException();
		}

	}