@Override
	public Object evaluate(Context context) {
		Iterator<Term> i = terms.iterator();
		Object value = i.next().operand.evaluate(context);

		while (i.hasNext()){
			Term next = i.next();
			
			value = next.add 
					? Operations.add(value,next.operand.evaluate(context))
					: Operations.sub(value,next.operand.evaluate(context));
		}
		
		return value;
	}