# UnitRange behavior

**URL:** https://discourse.julialang.org/t/unitrange-behavior/17887
**Category:** General Usage
**Created:** [November 23, 2018, 12:09am UTC](https://discourse.julialang.org/t/unitrange-behavior/17887 "2018-11-23T00:09:12Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)
#### Post date: [November 23, 2018, 12:09am UTC](https://discourse.julialang.org/t/unitrange-behavior/17887/1 "2018-11-23T00:09:13Z")

</div>

Can’t be right, right?

```julia
julia> 1.0:5 .- 0.5
1.0:1.0:4.0

julia> collect(1.0:5) .- 0.5
5-element Array{Float64,1}:
 0.5
 1.5
 2.5
 3.5
 4.5

```

---

<div class="post-metadata">

### Author: ![yurivish](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yurivish/32/307_2.png) [@yurivish](https://discourse.julialang.org/u/yurivish)
#### Post date: [November 23, 2018, 12:19am UTC](https://discourse.julialang.org/t/unitrange-behavior/17887/2 "2018-11-23T00:19:41Z")

</div>

Try adding parentheses around the range in the first example — it’s a precedence thing.

---

<div class="post-metadata">

### Author: ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)
#### Post date: [November 23, 2018, 12:29am UTC](https://discourse.julialang.org/t/unitrange-behavior/17887/3 "2018-11-23T00:29:32Z")

</div>

Yes, that’s it but quite unexpected, at least to me.

---

<div class="post-metadata">

### Author: ![Seif\_Shebl](https://avatars.discourse-cdn.com/v4/letter/s/eada6e/32.png) [@Seif\_Shebl](https://discourse.julialang.org/u/Seif_Shebl)
#### Post date: [November 23, 2018, 12:34am UTC](https://discourse.julialang.org/t/unitrange-behavior/17887/4 "2018-11-23T00:34:01Z")

</div>

If you’re coming from MATLAB, e.g., this is the very expected thing!

---

<div class="post-metadata">

### Author: ![yurivish](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yurivish/32/307_2.png) [@yurivish](https://discourse.julialang.org/u/yurivish)
#### Post date: [November 23, 2018, 12:35am UTC](https://discourse.julialang.org/t/unitrange-behavior/17887/5 "2018-11-23T00:35:53Z")

</div>

Agreed. I’ve been caught on it too. That’s how I knew 🙂

---

<div class="post-metadata">

### Author: ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)
#### Post date: [November 23, 2018, 12:42am UTC](https://discourse.julialang.org/t/unitrange-behavior/17887/6 "2018-11-23T00:42:55Z")

</div>

I must confess. I have many years of Matlab and, damn it, I had never noticed that. Who knows why, probably there I never missed the parentheses but here in Julia I was expecting a different thing.

---

<div class="post-metadata">

### Author: ![rdeits](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rdeits/32/286_2.png) [@rdeits](https://discourse.julialang.org/u/rdeits)
#### Post date: [November 23, 2018, 2:11am UTC](https://discourse.julialang.org/t/unitrange-behavior/17887/7 "2018-11-23T02:11:27Z")

</div>

Yeah, I generally end up adding parentheses for complicated ranges because the precedence isn’t always obvious.

On the other hand, the current behavior allows you to do:

```julia
for i in 1:N-1
  ...
end

```

which feels pretty natural.

---

<div class="post-metadata">

### Author: ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)
#### Post date: [November 23, 2018, 3:21am UTC](https://discourse.julialang.org/t/unitrange-behavior/17887/8 "2018-11-23T03:21:07Z")

</div>

Presumably you’ve written `1:n-1` or `a+1:n`?

---

<div class="post-metadata">

### Author: ![simonbyrne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simonbyrne/32/19_2.png) [@simonbyrne](https://discourse.julialang.org/u/simonbyrne)
#### Post date: [November 23, 2018, 3:55am UTC](https://discourse.julialang.org/t/unitrange-behavior/17887/9 "2018-11-23T03:55:32Z")

</div>

I like the Fortress idea where whitespace which is inconsistent with precedence is a syntax error: this would have caught the original example here.

See also [Non-transitive operator precedence · Issue #18714 · JuliaLang/julia · GitHub](https://github.com/JuliaLang/julia/issues/18714)

---

<div class="post-metadata">

### Author: ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)
#### Post date: [November 23, 2018, 4:06am UTC](https://discourse.julialang.org/t/unitrange-behavior/17887/10 "2018-11-23T04:06:28Z")

</div>

Yes, I really like that too. It would be breaking though so it would have to be opt-in or wait until 2.0.

---

<div class="post-metadata">

### Author: ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)
#### Post date: [November 23, 2018, 10:09am UTC](https://discourse.julialang.org/t/unitrange-behavior/17887/11 "2018-11-23T10:09:18Z")

</div>

> [@StefanKarpinski](#):
>
> Presumably you’ve written `1:n-1` or `a+1:n` ?

No. I can’t reconstruct it anymore but it involved something like this

```julia
julia> x=1:5;

julia> x - 0.5
┌ Warning: `a::AbstractArray - b::Number` is deprecated, use `a .- b` instead.
│ caller = top-level scope at none:0
└ @ Core none:0
0.5:1.0:4.5

```

which fixed in my head the array array side of this and then later using `1:5 .- 0.5` and being surprised that the results were different. Being late at night might had influenced too.
