Consider the function f(x)=(e^2)-x-2. Denote its antiderivative as F(x).
F(x) can be obtained via the comand Integrate[f[x],x]

f[x_]:=Exp[x]−x−2;
Integrate[f[x],x]

Suppose you want to evaluate the integration (∫_(Subscript[x, 0])^(Subscript[x, 1]))f(x)dx. Fundamentala theorem of calculus says
(∫_(Subscript[x, 0])^(Subscript[x, 1]))f(x)dx=F((Subscript[x, 1]))-F((Subscript[x, 0])).
F((Subscript[x, 1])), the antiderivative F evaluated at the value (Subscript[x, 1]), in Mathematica can be implemented via the command
Integrate[f[x],x]/.{x->(Subscript[x, 1])}. Say (Subscript[x, 1])=1;
F(x=1) is obtained by the command 
Integrate[f[x],x]/.{x->1}

Integrate[f[x],x]/.{x->1}

For a more compact and convenient notation, the  antiderivative function F[x] can be written in the form of 
i=Integrate[f[x],x];
F[xdum_]:=i/.{x->xdum}.

i=Integrate[f[x],x];
F[xdum_]:=i/.{x->xdum};

With these notation, you can evaluate the numerical value of 
(∫_(Subscript[x, 0])^(Subscript[x, 1]))f(x)dx
as 
F((Subscript[x, 1]))-F((Subscript[x, 0])). In command form,
F[x1]-F[x0].
Say, x1=1,x0=0, f(x)=(e^2)-x-2, the value of 
(∫_(Subscript[x, 0])^(Subscript[x, 1]))f(x)dx can be obtained in Mathematica via

f[x_]:=Exp[x]−x−2;
i=Integrate[Exp[x]−x−2,x];
F[xdum_]:=i/.{x->xdum};
x0=0;x1=1;
N[F[x1]-F[x0]]

The aboved method is what is described as the analytical approach, since it involve the generation of the analytical expression for the antiderivative. 
(∫_(Subscript[x, 0])^(Subscript[x, 1]))f(x)dx is evaluated via the Fundamental theorem of calculus, (∫_(Subscript[x, 0])^(Subscript[x, 1]))f(x)dx=F((Subscript[x, 1]))-F((Subscript[x, 0]))
where the antiderivative is generated by Mathematica. This is an example of symbolic calculation, which is a characteristic strength of Mathematica.

On the other hand, independenf of Fundamental theorem of Calculus, the numerical value of the integral (∫_(Subscript[x, 0])^(Subscript[x, 1]))f(x)dx can be also evaluaed numerically, based on Mathematica build-in algorithm (improved version of Simpsom’s method or other more advanced methods), via the command
NIntegrate[f[x],{x,x1,x0}].

This way of evaluating the integration is by way of numerical integration. It is less ‘superior’ then the analytical way. But if the numerical integration is correctly done, it should return a value as calculated by way of analytical expression.”

Try your code of NIntegrate on the function
f[x_]:=x/(1+x^2)^(3/2);
x0=-1.5;x1=5;