def calculate_separate_operator_conditionals(expression: str) -> int:
    """Return the evaluation of the given infix arithmetic expression

    Note: integer division should truncate toward zero.

    Args:
        expression: A valid infix arithmetic expression containing only digits and
        operators in '+', '-', '*', '/', and ' '.

    Examples:
        >>> calculate_separate_operator_conditionals("3+2*2")
        7
        >>> calculate_separate_operator_conditionals(" 3/2 ")
        1
        >>> calculate_separate_operator_conditionals(" 3+5 / 2 ")
        5
        >>> calculate_separate_operator_conditionals(" 3 - 1/2 ")
        3

    """

    operators = {"+", "-", "*", "/"}
    # DS's/res
    operand_stack = []
    curr_num, last_operator = 0, "+"  # Turing machine tape start state
    for i, token in enumerate(expression):

        # Build number from multi-digit strings
        if token.isdigit():
            curr_num = curr_num * 10 + int(token)

        if token in operators or i == len(expression) - 1:
            # Evaluate the currently stored number, possibly against a previous stack entry

            # Interpret '+', '-' operators as signs, deferring evaluation to stack summation
            if last_operator == "+":
                new_operand = curr_num
            elif last_operator == "-":
                new_operand = -curr_num

            # Perform '*', '/' against last stored number to respect operator precedence
            elif last_operator == "*":
                new_operand = operand_stack.pop() * curr_num
            else:  # last_operator == "/"
                new_operand = int(operand_stack.pop() / curr_num)  # truncate towards 0

            operand_stack.append(new_operand)

            # Turing machine tape state update:
            # reset `curr_num` since it has just been evaluated and
            # track token for future evaluation
            curr_num, last_operator = 0, token

    return sum(operand_stack)