Operator precedence: How wrong can I be?
Python 2, 171 156 bytes



lambda a:max(e(a))-min(e(a))
u=')%s('
def e(a,t=u):
 try:b=[eval(a)]
 except:b=[]
 return sum([e('(%s)'%a.replace(o,t%o),u%t)for o in"+-*/%"if' '+o in a],b)


Try it online!

How it works

We surround each operator with a different number of outward-facing pairs of parentheses to simulate different precedences (in all possible ways), and wrap enough inward-facing pairs of parentheses around the entire string, to get an expression we can eval.  For example, with

+ ↦ )+(
* ↦ ))*((
- ↦ )))-(((  

we get

9 * 8 + 1 - 4 ↦ (((9 ))*(( 8 )+( 1 )))-((( 4))) = 77.