This code is equivalent to
... operator<<( operator<<( operator<<( operator<<(cout,j++), " " ), j++ ), "\n" ); ...
Though order of function call is given, order of parameters evaluation is not.
So there is no guarantees which j++ is evaluated first. There are modifications of j without sequence points between them, so you see result of Undefined Behaviour.
[Edit1] There is inaccuracy in previous. operator<<(int) is a member function of basic_ostream. Denote operator<<(int) as f, operator<<(ostream&,const char*) as g. Then we have
...g(f(j++)," ").f(j++)...
Order of evaluation still can be: eval(j++) -> eval(j++) -> sequence point -> call(f) -> sequence point -> call(g) -> sequence point -> call(f). This is because of following quote from standard [expr.4]:
Except where noted, the order of
evaluation of operands of individual
operators and subexpressions of
individual expressions, and the order
in which side effects take place, is
unspecified