public PrimitiveOperator combineLeftNLeftOnRight(PrimitiveOperator other) {
		boolean[] newTruthTable = new boolean[8];

		// the other gate is on the left side - on the LSB
		newTruthTable[0]     = truthTable[((other.truthTable[0]) ? 1 : 0) | 0]; //000
		newTruthTable[1]     = truthTable[((other.truthTable[1]) ? 1 : 0) | 0]; //001 
		newTruthTable[2]     = truthTable[((other.truthTable[0]) ? 1 : 0) | 2]; //010 
		newTruthTable[3]     = truthTable[((other.truthTable[1]) ? 1 : 0) | 2]; //011
		newTruthTable[4]     = truthTable[((other.truthTable[2]) ? 1 : 0) | 4]; //100
		newTruthTable[5]     = truthTable[((other.truthTable[3]) ? 1 : 0) | 4]; //101 
		newTruthTable[6]     = truthTable[((other.truthTable[2]) ? 1 : 0) | 6]; //110 
		newTruthTable[7]     = truthTable[((other.truthTable[3]) ? 1 : 0) | 6]; //111

		return new PrimitiveOperator(newTruthTable);
	}