code: func (ev *evaluator) VectorscalarBinop(op ItemType, lhs Vector, rhs Scalar, swap, returnBool bool, enh *EvalNodeHelper) Vector {
  	for _, lhsSample := range lhs {
  		lv, rv := lhsSample.V, rhs.V
  		// lhs always contains the Vector. If the original position was different
  		// swap for calculating the value.
  		if swap {
  			lv, rv = rv, lv
  		}
  		value, keep := vectorElemBinop(op, lv, rv)
  		// Catch cases where the scalar is the LHS in a scalar-vector comparison operation.
  		// We want to always keep the vector element value as the output value, even if it's on the RHS.
  		if op.isComparisonOperator() && swap {
  			value = rv
  		}
  		if returnBool {
  			if keep {
  				value = 1.0
  			} else {
  				value = 0.0
  			}
  			keep = true
  		}
  		if keep {
  			lhsSample.V = value
  			if shouldDropMetricName(op) || returnBool {
  				lhsSample.Metric = enh.dropMetricName(lhsSample.Metric)
  			}
  			enh.out = append(enh.out, lhsSample)
  		}
  	}
  	return enh.out
  }
docs: // VectorscalarBinop evaluates a binary operation between a Vector and a Scalar.