code: private final DiceNotationExpression
              getBinaryOperation(final Collection<String> operators) {
          final Stack<DiceNotationExpression> operands;
          BinaryOperation operation;
          DiceNotationExpression left;
          DiceNotationExpression right;
  
          // There are as many operands as operators plus one
          operands = new Stack<>();
          for (Integer i = 0; i <= operators.size(); i++) {
              operands.push(nodes.pop());
          }
  
          // The operands and operators are combined into the model expressions
          for (final String operator : operators) {
              left = operands.pop();
              right = operands.pop();
  
              // Checks which kind of operation this is and builds it
              if (ADDITION_OPERATOR.equals(operator)) {
                  LOGGER.trace("Addition operation");
                  operation = new AdditionOperation(left, right);
              } else if (SUBTRACTION_OPERATOR.equals(operator)) {
                  LOGGER.trace("Subtraction operation");
                  operation = new SubtractionOperation(left, right);
              } else if (MULTIPLICATION_OPERATOR.equals(operator)) {
                  operation = new MultiplicationOperation(left, right);
              } else if (DIVISION_OPERATOR.equals(operator)) {
                  operation = new DivisionOperation(left, right);
              } else {
                  LOGGER.error("Unknown operator {}", operator);
                  throw new IllegalArgumentException(
                          String.format("The %s operator is invalid", operator));
              }
  
              // Each new expression is stored back for the next iteration
              operands.push(operation);
          }
  
          return operands.pop();
      }
docs: Creates a binary operation from the operators received.
  <p>
  By making use of the nodes stack and the received operators it can build
  any binary operation.
  <p>
  The returned expression will be the root which aggregates all the
  operations parsed into a tree.
  
  @param operators
  parsed operators
  @return a binary operation